package com.phoenix.jsef.code.generator.provider;

import com.phoenix.jsef.code.generator.pojo.ColumnSchema;
import com.phoenix.jsef.code.generator.pojo.PrimaryKeySchema;
import com.phoenix.jsef.code.generator.pojo.TableSchema;
import com.phoenix.jsef.jdbcutils.DataBaseType;

import java.util.List;
import java.util.Map;


public interface IDbSchemaProvider {

    public DataBaseType dataBaseType();

	/**
	 * 得到当前数据库名称
	 * @return
	 */
	public String getDatabaseName();
	
	/**
	 * 得到当前数据库中的数据表或视图
	 * @return
	 */
	public List<TableSchema> getTables();
	
	
	/**
	 * 得到指定数据表的列定义信息
	 * @param tableName 数据库表名称
	 * @return
	 */
	public List<ColumnSchema> getTableColumns(String tableName);
	
	/**
	 * 得到指定数据表定义的主键
	 * @param tableName 数据库表名称
	 * @return
	 */
	public List<PrimaryKeySchema> getTablePrimaryKey(String tableName);
	
	/**
	 * 提供给模板准备的数据
	 * @param tableName 数据库表名称
	 * @return
	 */
	public Map<String,Object> prepareDataModel(String tableName);
	
	/**
	 * 得到数据库中的数据类型对应在java中的数据类型
	 * @param type 数据库中的数据类型
	 * @return
	 */
	public String getDataType(String type);
}
